// pages/deviceinfo/index.js
import {
  wgs84togcj02
} from "../../utils/gnss.js"
import Toast from 'tdesign-miniprogram/toast/index';
import {
  editDeviceName,
  getDevice,
  delDevice,
  editModel
} from "../../utils/api.js";
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cur: {},
    infoData: [],
    deviceStatus: false,
    // 中心点经纬度
    longitude: "",
    latitude: "",
    // 地图标点
    markers: [],
    // 控制在数据赋值后显示地图
    showMap: false,
    // 编辑类
    dialogInputVal: "",
    showWithInput: false,
    showTextAndTitleWithInput: false,
    // 确认类
    confirmBtn: {
      content: '确定',
      variant: 'base'
    },
    showConfirm: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // this.setInfoData(JSON.parse(options.data))
    this.setInfoData(options.id)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 设置信息
  setInfoData(e) {
    var device_id = e
    this.setData({
      deviceId: e
    })
    getDevice({
      id: device_id
    }).then(res => {
      if (res.code == 1) {
        if (res.data.is_have_trends == 1) {
          this.setData({
            deviceStatus: true,
          })
        }
        this.setData({
          infoData: res.data,
          showMap: true
        })
        this.init()
      }
    })
  },
  // 初始化地点
  init() {
    wx.showToast({
      title: "数据加载中...",
      icon: 'loading',
    })
    // 请求数据接口
    // 如果返回错误，地图中心定位到当前位置，清除范围，标点
    // if (true) {
    this.setData({
      markers: [],
      polygon: false
    })
    if (this.data.deviceStatus) {
      // 页面传递过来的参数进行赋值
      let devices = [{
        "locate": this.data.infoData.locate,
        "power": "10"
      }];
      let markerarr = []
      for (let i = 0; i < devices.length; i++) {
        var value = this.funWGS(devices[i].locate.split(",")[1], devices[i].locate.split(",")[0]);
        let marker = {
          "id": i,
          "longitude": value.longitude,
          "latitude": value.latitude,
          "iconPath": "../../assect/dw.png",
          "width": "50px",
          "height": "50px",
          "power": devices[i].power,
        }
        markerarr.push(marker)
      }
      // 如果有设备获取第0个设备的位置作为中心点
      this.setData({
        markers: markerarr,
        longitude: markerarr[0].longitude,
        latitude: markerarr[0].latitude,
      })
    } else {
      // 如果没有设备则获取用户位置作为中心点
      wx.getLocation({
        type: 'gcj02', // 比较精确
        success: (res) => {
          this.setData({
            latitude: res.latitude,
            longitude: res.longitude,
          })
          this.addMark(res)
        },
        fail: (res) => {
          Toast({
            context: this,
            selector: '#t-toast',
            duration: 3000,
            message: res.errMsg,
          });
        }
      })
    }
  },
  addMark(res) {
    var marker = []
    marker.push({
      id: 0, //标记点 id
      width: 50,
      height: 50,
      longitude: res.longitude,
      latitude: res.latitude,
      iconPath: '../../assect/me.png'
    })
    this.setData({
      markers: marker
    })
  },
  // 标点点击事件
  onMarkerTap(e) {
    if (this.data.deviceStatus) {
      // 弹出卡片
      this.setData({
        visible: true
      });
    }
    // console.log(e)
    // console.log(this.data.markers[e.detail.markerId])
  },
  // 弹出层关闭
  onVisibleChange(e) {
    // console.log(e)
    this.setData({
      visible: e.detail.visible,
    });
  },
  // 将gnss定位纠偏
  funWGS(lat, lng) {
    let lngdm = lng.toString();
    let lngarr = lngdm.split(".");
    let lng2 = parseFloat("0." + lngarr[1]) * 60;
    let lng1 = parseFloat(lngarr[0] * 100) + lng2;
    this.Lngdm = lng1;
    let latdm = lat.toString();
    let latarr = latdm.split(".");
    let lat2 = parseFloat("0." + latarr[1]) * 60;
    let lat1 = parseFloat(latarr[0] * 100) + lat2;
    this.Latdm = lat1;

    //convert wgs84 to cj02
    let cj02 = wgs84togcj02(lng, lat);
    let loa = {
      longitude: cj02[0].toFixed(10),
      latitude: cj02[1].toFixed(10)
    }
    return loa
  },
  // 编辑弹框
  handleEdit(e) {
    // console.log(e)
    const {
      key
    } = e.currentTarget.dataset;
    this.setData({
      [key]: true,
      dialogKey: key
    });
  },
  // 取消
  closeDialog() {
    const {
      dialogKey
    } = this.data;
    this.setData({
      [dialogKey]: false
    });
  },
  // 编辑确认
  editConfirmDialog(e) {
    var name = this.data.dialogInputVal
    var id = this.data.infoData.id
    if (!name) {
      Toast({
        context: this,
        selector: '#t-toast',
        message: '请输入设备别名',
      });
    } else {
      editDeviceName({
        id: id,
        name: name
      }).then(res => {
        if (res.code == 1) {
          this.setData({
            dialogInputVal: "",
          })
          const {
            dialogKey
          } = this.data;
          this.setData({
            [dialogKey]: false
          });
          this.setInfoData(this.data.infoData.id)
        } else {
          Toast({
            context: this,
            selector: '#t-toast',
            message: res.message,
          });
        }
      })
    }
  },
  inputChange(e) {
    this.setData({
      dialogInputVal: e.detail.value
    })
  },
  // 删除确认弹框
  handledel(e) {
    const {
      key
    } = e.currentTarget.dataset;
    this.setData({
      [key]: true,
      dialogKey: key
    });
  },
  // 删除确认
  delConfirm(e) {
    delDevice({
      id: this.data.deviceId
    }).then(res => {
      if (res.code == 1) {
        Toast({
          context: this,
          selector: '#t-toast',
          message: '删除成功',
        });
        wx.navigateBack({
          delta:1
        })
      }
    })
  },
  // 切换模式
  switchChange(e){
    var change = e.detail.value
    var device_id = this.data.infoData.id
    editModel({
      id:device_id,
      model:change
    }).then(res=>{
      if(res.code == 1){
        Toast({
          context: this,
          selector: '#t-toast',
          message: '切换成功',
        });
      }
    })
    // console.log(change)
    // console.log(device_id)
  }
})